package com.mdn.steelcase.dao;

import java.util.List;

import com.mdn.steelcase.exception.ReflectionException;


public interface GenericDao<T> {

	T save(T instance);
	
	T update(T instance);

	void delete(Long id);
	
	void delete(T instance);
	
	T get(Long id);

	List<T> getAll();
	
	boolean exist(Long id);

	T findSingleByColumn(String columnName, Object value);

	List<T> findByColumn(String columnName, Object value);

	T findSingleByExample(T example, String... params) throws ReflectionException;
	
	List<T> findByExample(T example, String... params) throws ReflectionException;

}
